package NGUYENVANTHANG.arays.t1;

public class Controllers {	
	/**
	 * 
	 * @param myArray : Biến mảng chứa các giá trị người dùng nhập vào
	 * @param shOpt
	 * + shOpt = 0: Chọn ra các giá trị >= 5
	 * + shOpt = 1: Chọn ra các giá trị < 5
	 * @return
	 */
	//vì dùng mảng trung gian temps nên ko dùng được void đâu
	// các thuật toán sắp xếp thì dùng hàm void *vì thay đổi trực tiếp giá trị trong mảng truyền vào* (mảng truyền
	// từ Views tới Controllers )
	public  double[] FindValue(double[] myValue, short shOpt){
		//1. Khai báo khởi tạo biến mảng trung gian 
		double[] temps = new double[myValue.length];
				
		//2. Kiểm tra sự lựa chọn của người dùng trên app
		/*
		 * + shOpt = 0: >= 5
		 * + shOpt = 1: < 5		 * 
		 * */
		int iCount = 0;
		for(int i=0;i<myValue.length;i++){
			if(shOpt == 0){
				if(myValue[i] >= 5){
					temps[iCount] = myValue[i];
					iCount++;
				}				
			}
			else{
				if(myValue[i] < 5){
					temps[iCount] = myValue[i];
					iCount++;
				}				
			}
		}
		
		//3. Khởi tạo biến mảng
	double[] myValue2 = new double[iCount];
		
		//4. Sao chép toàn bộ dữ liệu thỏa mãn từ mảng temps --> myValue
		/*
		 * System.arraycopy(1,2,3,4,5);
		 * + (1): Dữ liệu mảng nguồn đâu?
		 * + (2): Lấy dữ liệu từ chỉ số thứ mấy trong mảng nguồn?
		 * + (3): Mảng chứa dữ liệu đích đâu?
		 * + (4): Bắt đầu đưa vào từ chỉ số thứ bao nhiêu trong mảng đích?
		 * + (5): Lấy bao nhiêu giá trị trong mảng nguồn ra?
		 * */
		//C1: 
		System.arraycopy(temps, 0, myValue2, 0, iCount);
		return myValue2;
	
		
		//C2:
		/*for(int j=0;j<temps.length;j++){
			if(j<iCount){
				myValue1[j] = temps[j];
			}
		}*/
		
		//5. Trả biến mảng về cho Applications
		
	}
	
 }

